#include<iostream>
#include<signal.h>

void handler(sigset_t &set)
{
    // std::cout<<"sigan=="<<signal<<std::endl;
    //打印panding位图
    //注意该函数会自动添加末决信号
    sigpending(&set);
    int d;
    for(int i=32;i>0;i--)
    {
        d = sigismember(&set, i);
        if(d==1)
        {
            std::cout<<"1";
        }
        else
        {
            std::cout<<"0";
        }
    }
    std::cout<<"\n";
}

int main()
{
    sigset_t set;
    sigemptyset(&set);
    sigaddset(&set, 14);  // 添加14号信号到阻塞集
    sigprocmask(SIG_BLOCK, &set, NULL);  // 应用阻塞集
    kill(getpid(),14);
    handler(set);
    //sigprocmask(, const sigset_t *set, sigset_t *oldset);
    // //信号捕捉
    // signal(14,handler);
    // signal(5,handler);
    // //设置闹钟发生14号信号
    // alarm(2);
    // sleep(2);
    // // while(1)
    // // {
    // //     // std::cout<<"进程："<<getpid()<<std::endl;
    // //     sleep(1);
    // // }
     //发送新的14号信号
    //std::cout<<"我请求新的14号信号"<<std::endl;
    //sleep(1);
    //kill(getpid(),14);
    
    //std::cout<<"执行完成"<<std::endl;
    return 0;
}